var say = function (num) {
    if (num === void 0) { num = 8; }
    return "你好";
};
// ts的类型
// 1。boolean 布尔    let 变量名:类型=值;
var kk = true; //默认ts 去自己推断类型
var flag = false; //创建变量直接赋值
var dirFlag; //先创建变量在赋值
// dirFlag=99;//报错 类型错误
dirFlag = true; //必须赋值成布尔值
//2. string 字符串
var myname = "王德发";
myname = "字符串";
//3.number 类型
var count = 99;
count = 100;
//4。null  空类型
var x = null;
// 5.undefined 未定义 为赋值
var z; //类型为any 不是undefined
var y = undefined;
// ------------------------------------------------------
// 6. any 任意类型 可以赋值任意类型
var homestr; //any类型 任意类型
homestr = "99";
homestr = true;
var cate = "99";
cate = 100;
//7.数组
// 第一种写法
var arr = [1, 2, 3, 12.8]; //数字类型的数组
// 第二种写法 (数组泛型)
var list = [5, 6, 7, 8];
// 字符串类型的数组
var person = ["是", "sdf", "sd撒旦法"];
// 字符串和数字类型的数组
var cars = ["q8", "特斯拉", 88, 100];
var mylist = ["你好", 99, true];
//存放任意类型的数组
var myarr = []; //any类型的数组
var myCounts = ["sdf", null, undefined, 88, true, { name: 1, age: 2 }];
// 8.元组类型允许表示一个已知元素数量和类型的数组，
// 各元素的类型不必相同。 比如，你可以定义一对值分别为 string 和 number 类型的元组。
var klist = ["你好", true, 88];
var myboss;
myboss = [[1, 2, 3], "sdf", { name: 1 }, [1, "sdf"], 33];
// 9.void 空类型  没有任何值  常用于标注函数没有返回值
function run() {
    var x = 1;
}
// 函数的返回值类型 返回字符串
function getParams() {
    return "你好";
}
// 函数的返回值是对象
function getList() {
    var x = 1;
    console.log(x);
    return {
        name: 1,
        age: 2
    };
}
// 10.object 类型 对象类型
var obj = {
    name: 1,
    age: 2,
    say: function () { }
};
var arrK = [{ name: 1, age: 2 }, { name: 3, age: 4 }];
// 11.enum 类型是对 JavaScript 标准数据类型的一个补充。 使用枚举类型可以为一组数值赋予友好的名字
var Color;
(function (Color) {
    Color[Color["Red"] = 0] = "Red";
    Color[Color["Blue"] = 1] = "Blue";
    Color[Color["Green"] = 2] = "Green"; //2
})(Color || (Color = {}));
console.log(Color.Blue); //1
var ColorList;
(function (ColorList) {
    ColorList[ColorList["Red"] = 3] = "Red";
    ColorList[ColorList["Blue"] = 4] = "Blue";
    ColorList[ColorList["Green"] = 5] = "Green";
})(ColorList || (ColorList = {}));
console.log(ColorList.Blue); //4
//12,联合类型  在泛型中<string|number> 或(string|number)
var arrH = ["收到", 88];
function sayHello(a, b) {
    if (a === void 0) { a = 99; }
    console.log(a);
    console.log(b);
}
sayHello(166, true);
function kkSay(a) {
}
// 13. 类型断言
// 通过类型断言这种方式可以告诉编译器，“相信我，我知道自己在干什么”。
//  类型断言好比其它语言里的类型转换，但是不进行特殊的数据检查和解构。 
//  它没有运行时的影响，只是在编译阶段起作用。 TypeScript 会假设你，程序员，已经进行了必须的检查。
var kstr = "今天是个好日子";
var str;
str = kstr;
console.log(str.substr(4));
// x初始为number类型
// 类型断言
//   <string>x 类型推断第一种写法
//   (x as string) 类型推断的第二种写法
function krun(x, y) {
    if (x.length) {
        console.log(888);
    }
}
console.log(krun(8848, 99));
var kkgg = "sdfhkasdhfkasdh";
console.log(kkgg.substr(4));
// 14.类推推断
var kss; //没有值 为any类型
var ssr = "sdf"; //有值 推断为值的类型
